package paq_negocio;

import com.sun.rowset.CachedRowSetImpl;
import java.util.Date;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import paq_clase_interfaz.interfaz_promocion;
import paq_entidades.enti_paralelo;
import paq_entidades.enti_programa_postgrado;
import paq_entidades.enti_promocion;
import paq_entidades.enti_variables;
import paq_sentencias.Ejecutarsql;

@Stateless
public class neg_promocion implements interfaz_promocion {

    enti_variables v = new enti_variables();
    enti_programa_postgrado prog = new enti_programa_postgrado();
    enti_paralelo para = new enti_paralelo();
    enti_promocion entidad = new enti_promocion();
    Ejecutarsql ejec = new Ejecutarsql();

    @Override
    public void insertar(String codigo, String pp_codigo, String pl_codigo, String finicio, String ffin, String nombre, Integer numeroestudinates) {
        prog.setCodigo(pp_codigo);
        para.setCodigo(pl_codigo);
        entidad.setProm_fechainicio(finicio);
        entidad.setPro_fechafin(ffin);
        entidad.setPro_nombre(nombre);
        entidad.setNumestudiantes(numeroestudinates);
        entidad.setProm_codigo(codigo);
        String sql = "insert into promocion (prom_codigo,pp_codigo,pl_codigo,prom_fechainicio,pro_fechafin,pro_nombre,pro_numero_estudiantes) values('" + entidad.getProm_codigo() + "','" + prog.getCodigo() + "','" + para.getCodigo() + "',to_date('" + entidad.getProm_fechainicio() + "','yyyy-mm-dd'),to_date('" + entidad.getPro_fechafin() + "','yyyy-mm-dd'),'" + entidad.getPro_nombre() + "','" + entidad.getNumestudiantes() + "')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void eliminar(String al_codigo) {
        entidad.setProm_codigo(al_codigo);
        String sql = "delete from  promocion where prom_codigo='" + entidad.getProm_codigo() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void actualizar(String codigo, String pp_codigo, String pl_codigo, String finicio, String ffin, String nombre, Integer numeroestudinates) {
        entidad.setProm_codigo(codigo);
        prog.setCodigo(pp_codigo);
        para.setCodigo(pl_codigo);
        entidad.setProm_fechainicio(finicio);
        entidad.setPro_fechafin(ffin);
        entidad.setPro_nombre(nombre);
        entidad.setNumestudiantes(numeroestudinates);
        String sql = "update promocion set pp_codigo='" + prog.getCodigo() + "',pl_codigo='" + para.getCodigo() + "',prom_fechainicio=to_date('" + entidad.getProm_fechainicio() + "','yyyy-mm-dd'),pro_fechafin=to_date('" + entidad.getPro_fechafin() + "','yyyy-mm-dd'),pro_nombre='" + entidad.getPro_nombre() + "',pro_numero_estudiantes=" + entidad.getNumestudiantes() + " where prom_codigo='" + entidad.getProm_codigo() + "'  ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getLista(String programa) {
        try {
            v.crs = (CachedRowSetImpl) ejec.rellena2("select pr.PROM_CODIGO,pg.PP_CODIGO,pg.PP_NOMBRE,pl.PL_CODIGO,pl.PL_NOMBRE,pr.PROM_FECHAINICIO,pr.PRO_FECHAFIN,pr.PRO_NOMBRE,pr.PRO_NUMERO_ESTUDIANTES,pg.pp_estado,(select count(a.AL_CEDULA) from ALUMNO a where pr.PROM_CODIGO=a.PROM_CODIGO) as total from promocion pr,PARALELO pl,PROGRAMA_POSTGRADO pg where pg.PP_CODIGO=pr.PP_CODIGO and pg.PP_CODIGO='"+ programa +"' and pl.PL_CODIGO=pr.PL_CODIGO order by pr.PRO_NOMBRE");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs;
    }

    @Override
    public CachedRowSetImpl getListacombopromocion() {
        try {
            v.crs2 = (CachedRowSetImpl) ejec.rellena2("SELECT (PROG.PP_NOMBRE  || ' ' ||PROM.PRO_NOMBRE || '__' || pa.pl_nombre)  AS PRO_NOMBRE,PROM.PROM_CODIGO FROM PROGRAMA_POSTGRADO PROG, PROMOCION PROM,paralelo pa WHERE  PROG.PP_CODIGO=PROM.PP_CODIGO and pa.PL_CODIGO=prom.PL_CODIGO order by PRO_NOMBRE");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs2;
    }

    @Override
    public String getmensajei() {
        String sdr = "";
        sdr = v.msm;
        return sdr;
    }

    @Override
    public CachedRowSetImpl getLista_nombres_promocion(String cod) {
        try {
            v.crs1 = (CachedRowSetImpl) ejec.rellena2("SELECT (PROG.PP_NOMBRE  || ' ' ||PROM.PRO_NOMBRE || '__' || pa.pl_nombre)  AS PRO_NOMBRE,PROM.PROM_CODIGO FROM PROGRAMA_POSTGRADO PROG,COORDINADOR_PROGRAMA coor, PROMOCION PROM,paralelo pa WHERE  PROG.PP_CODIGO=PROM.PP_CODIGO and pa.PL_CODIGO=prom.PL_CODIGO and PROG.PR_CEDULA=coor.PR_CEDULA and coor.PR_CEDULA='" + cod + "' and (select to_char(sysdate,'yyyy-mm-dd') from dual) <=to_char(PROM.PRO_FECHAFIN,'yyyy-mm-dd')  order by PRO_NOMBRE");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs1;
    }

    @Override
    public CachedRowSetImpl lista_grupos_modulos() {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2(" select distinct fdi.FD_GRUPO_MODULO, modu.MOD_NOMBRE from FECHA_DIA fdi,modulo modu where modu.MOD_CODIGO=fdi.MOD_CODIGO");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs3;
    }

    @Override
    public CachedRowSetImpl total_alumnos_promocion(String promocion) {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select count(al_cedula) as total from alumno where alumno.PROM_CODIGO='" + promocion + "' ");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs3;
    }

    @Override
    public CachedRowSetImpl fecha_final_promocion(String promocion) {
        try {
            v.crs4 = (CachedRowSetImpl) ejec.rellena2("select pro_fechafin as fecha from promocion where PROM_CODIGO='" + promocion + "' ");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs4;
    }

    @Override
    public void actualizar_promocion(String codigo, String pl_codigo, String finicio, String ffin, String nombre, Integer numeroestudinates) {
    entidad.setProm_codigo(codigo);
        
        para.setCodigo(pl_codigo);
        entidad.setProm_fechainicio(finicio);
        entidad.setPro_fechafin(ffin);
        entidad.setPro_nombre(nombre);
        entidad.setNumestudiantes(numeroestudinates);
        String sql = "update promocion set prom_fechainicio=to_date('" + entidad.getProm_fechainicio() + "','yyyy-mm-dd'),pro_fechafin=to_date('" + entidad.getPro_fechafin() + "','yyyy-mm-dd'),pro_nombre='" + entidad.getPro_nombre() + "',pro_numero_estudiantes=" + entidad.getNumestudiantes() + " where prom_codigo='" + entidad.getProm_codigo() + "' and pl_codigo='" + para.getCodigo() + "'  ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getListacombodepartamento() {
         try {
            v.crs4 = (CachedRowSetImpl) ejec.rellena2("SELECT * from departamento");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs4;
    }

    @Override
    public CachedRowSetImpl getListacombodirectores() {
        try {
            v.crs6 = (CachedRowSetImpl) ejec.rellena2("SELECT dep_director from departamento");
        } catch (Exception ex) {
            Logger.getLogger(neg_promocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs6;
    }

    
}
